home *** CD-ROM | disk | FTP | other *** search
/ Softdisk Supreme / Softdisk Supreme.iso / pc / DSK Files / 0-49 / SD023d.dsk / AMPER ARRAY DEMO.bas next >
BASIC Source File  |  2003-06-12  |  8KB  |  68 lines

  1. 1  REM "<CTRL-M><CTRL-M>      -=< AMPER ARRAY DEMO >=-<CTRL-M><CTRL-M>      BY C.R.J.  DATE:07/13/83<CTRL-M><CTRL-M>
  2. 10  CALL  PEEK(175) + PEEK(176) *256 -46
  3. 15  DIM A$(18,3),K%(3)
  4. 20  SPEED= 255: NORMAL : PRINT  CHR$(21);: PR# 0: TEXT : HOME :M$ =  CHR$(13):T$ = M$ +M$:FS =  -16302: ONERR  GOTO 60
  5. 30  & "RESET ERR",253
  6. 40  GOTO 90
  7. 50  TEXT : NORMAL : VTAB 24: HTAB 10: PRINT "ONE MOMENT PLEASE...";: SPEED= 254: VTAB 20: & "RESET BOOT": & "RUN","DEMO MENU"
  8. 60  & "ERR",N,L: IF N = 255  OR N = 253  THEN 50: REM "IF CTRL-C OR RESET
  9. 70  VTAB 23: HTAB 1: INVERSE : & "ERR MSSG": NORMAL : PRINT "  PRESS <RETURN>";: & "GET"A$ IF  CHR$(13);: HTAB 1: CALL  -958: GOTO 50
  10. 90  TEXT : HOME :M$ =  CHR$(13):T$ = M$ +M$:SP$ = "                                        ":Q$ =  CHR$(34)
  11. 100  INVERSE : VTAB 2: HTAB 9: PRINT "                      ": HTAB 9: PRINT "   AMPER ARRAY DEMO   ": HTAB 9: PRINT "                      ": NORMAL : & "WAIT",1
  12. 110  FOR X = 1 TO 11: READ P,D: & "BEEP",P,D *1.25: NEXT X: & "WAIT",1.5
  13. 120  DATA 47,5,0,5,37,15,0,5,47,5,0,10,63,5,0,5,37,15,0,5,31,7: REM " 1(C) 3(E) 1(C) 1(LO G) 3(E) 1(HI G)
  14. 150  PRINT M$:A$ = "AMPER-ARRAY IS DESIGNED TO PERFORM SOPHISTICATED MACHINE LANGUAGE OPERATIONS ON ARRAYS FROM WITHIN YOUR APPLESOFT BASIC PROGRAM.": & "PRT",A$: GOSUB 8400: & "WAIT",10
  15. 160  PRINT M$:A$ = "USING AMPER-ARRAY, YOU'LL BE ABLE TO PERFORM ALL THE ESSENTIALS OF DATA-BASE TYPE OPERATIONS (FAST READ/WRITE, SEARCH, SORT, AND MORE) WITH EASE.": & "PRT",A$: GOSUB 8400: & "WAIT",10
  16. 200  HOME : GOSUB 8600: HTAB 15: INVERSE : PRINT "AMPER ARRAY": NORMAL : PRINT M$:A$ = "IN ADDITION, YOU'LL BE ABLE TO PERFORM OPERATIONS ON ARRAYS THAT PREVIOUSLY WOULD HAVE BEEN IMPRACTICAL AT BEST IN BASIC.": & "PRT",A$: & "WAIT",10
  17. 210  PRINT M$:A$ = "MATRIX OPERATIONS, SCIENTIFIC FUNCTIONS, ARRAY MANIPULATIONS, AND MUCH MORE, CAN BE PERFORMED QUICKLY, ON AN ENTIRE ARRAY, WITH A SINGLE STATEMENT.": & "PRT",A$: GOSUB 8400: & "WAIT",9
  18. 220 R = 18:C = 3: FOR R1 = 1 TO R: FOR C1 = 1 TO C: READ A$(R1,C1): NEXT C1: NEXT R1
  19. 230  DATA "MIDDLETOWN","CONNECTICUT","89292","BERKELEY","CALIFORNIA","101922","SILVER SPRINGS","ARIZONA","3439","EL CERITO","CALIFORNIA","82299","NEW YORK","NEW YORK","9233822","SAN FRANCISCO","CALIFORNIA","633398","BOISE","OHIO","83320"
  20. 240  DATA "EL CAJON","CALIFORNIA","78233","LAST GASP","WYOMING","3","SAN DIEGO","CALIFORNIA","723909","SEATTLE","WASHINGTON","1222910","LEAVENWORTH","WASHINGTON","8239","HONOKAA","HAWAII","323","DUCK SPRINGS","UTAH","23"
  21. 250  DATA "WOODSTOCK","NEW YORK","627355","OGDENBURG","NEW YORK","10922","MELBOURNE","FLORIDA","532209","GRASS VALLEY","CALIFORNIA","2373"
  22. 300  HOME : GOSUB 8600: INVERSE : PRINT M$"ARRAY READ": NORMAL :A$ = "WILL READ A SEQUENTIAL TEXT FILE FROM DISK INTO A STRING OR REAL ARRAY.": & "PRT",A$: & "WAIT",6
  23. 310  PRINT M$:A$ = "THIS IS WHAT YOU HAVE TO DO WITH BASIC TO READ A TWO-DIMENSIONAL ARRAY:": & "PRT",A$: LIST 9010,9080: GOSUB 8500: & "WAIT",8
  24. 320  & "WINDOW",7:W = 7: GOSUB 8700: & "WINDOW",1: & "WAIT",1: VTAB 7:A$ = "HERE'S HOW 'AMPER ARRAY' CAN DO IT:": & "PRT",A$: PRINT M$"9010  & "Q$"READ"Q$","Q$"R"Q$","Q$"DATA FILE"Q$",54"M$"     ,E,A$(0,0)": GOSUB 8400: & "WAIT",12
  25. 400 W = 24: GOSUB 8700: GOSUB 8600: INVERSE : PRINT M$"ARRAY SORT": NORMAL :A$ = "QUICKLY SORTS A STRING, REAL, OR INTEGER ARRAY USING THE SHELL-METZNER METHOD AND MULTIPLE KEY FIELDS IN EITHER ASCENDING OR DESCENDING ORDER.": & "PRT",A$: & "WAIT",10
  26. 410  PRINT M$:A$ = "LET'S SEE HOW QUICKLY WE CAN SORT A TWO-DIMENSION STRING ARRAY...": & "PRT",A$: GOSUB 8500: & "WAIT",6:W = 22: GOSUB 8700: VTAB 22: PRINT "HERE'S OUR ARRAY...";: GOSUB 8400: & "WAIT",2: GOSUB 9200: & "WAIT",10
  27. 420  & "WINDOW",22,23: HOME :A$ = "LET'S SORT BY TOWN...": & "PRT",A$;: GOSUB 8500: & "WAIT",2:K%(0) = 1:K%(1) = 1: GOSUB 9300: & "WAIT",8
  28. 430  & "WINDOW",22,23: HOME :A$ = "LET'S SORT BY STATE...": & "PRT",A$;: GOSUB 8500: & "WAIT",2:K%(0) = 1:K%(1) = 2: GOSUB 9300: & "WAIT",8
  29. 440  & "WINDOW",22,23: HOME :A$ = "LET'S SORT BY POPULATION...": & "PRT",A$;: GOSUB 8500: & "WAIT",2:K%(0) = 1:K%(1) = 3 +128: GOSUB 9300: & "WAIT",8
  30. 450  & "WINDOW",1,24
  31. 500 W = 24: GOSUB 8700: GOSUB 8600: INVERSE : PRINT M$"MATRIX MATH": NORMAL :A$ = "CAN NOW BE DONE EASILY.  AMPER-ARRAY HAS ROUTINES FOR MATRIX IDENTITY, MATRIX TRANSPOSE, MATRIX MULTIPLY, AND MATRIX INVERSE.": & "PRT",A$: & "WAIT",10
  32. 510 W = 14: GOSUB 8700: GOSUB 8500: INVERSE : PRINT M$"ARRAY DELIMITED STRINGS": NORMAL :A$ = "LET YOU TREAT A ONE-DIMENSIONAL STRING ARRAY AS AN ARRAY OF RECORDS, EACH CONTAINING SEVERAL FIELDS.": & "PRT",A$: & "WAIT",10
  33. 600 W = 24: GOSUB 8700: GOSUB 8600: INVERSE : PRINT M$"ROW/COLUMN ADD";: NORMAL : PRINT " & ";: INVERSE : PRINT "KILL": NORMAL 
  34. 610 A$ = "WILL ADD OR DELETE ANY SPECIFIED ROW OR COLUMN IN A TWO-DIMENSIONAL REAL, INTEGER OR STRING ARRAY.": & "PRT",A$: & "WAIT",10
  35. 620  PRINT M$:A$ = "LET'S SEE HOW IT WORKS...": & "PRT",A$: GOSUB 8500: & "WAIT",6:W = 22: GOSUB 8700: VTAB 22: PRINT "HERE'S OUR ARRAY AGAIN...";: GOSUB 8400: & "WAIT",2: GOSUB 9200: & "WAIT",10
  36. 630  & "WINDOW",22,23: HOME :A$ = "LET'S DELETE THE 'STATE' COLUMN...": & "PRT",A$;: GOSUB 8500: & "WAIT",2:X = 2:C1 = 2: & "ROW COL KILL",A$(X,C1):C = 2: GOSUB 9200: & "WAIT",8
  37. 640  & "WINDOW",22,23: HOME :A$ = "NOW, LET'S PUT IT BACK IN...": & "PRT",A$;: GOSUB 8500: & "WAIT",2:X = 2:C1 = 2: & "ROW COL ADD",A$(X,C1):C = 3: GOSUB 9200: & "WAIT",8
  38. 650  & "WINDOW",22,23: HOME :A$ = "...SO WE CAN PUT SOME DATA IN IT.": & "PRT",A$;: GOSUB 8500: & "WAIT",2: FOR X = 1 TO 18: READ A$(X,2): NEXT X: GOSUB 9200: & "WAIT",8
  39. 660  & "WINDOW",1,24
  40. 670  DATA "FOUR","SCORE","AND","SEVEN","YEARS","AGO,","OUR","FATHERS","BROUGHT","FORTH","ON","THIS","CONTINENT","A NEW","NATION","CONCEIVED","IN","LIBERTY"
  41. 700 W = 24: GOSUB 8700: GOSUB 8600: INVERSE : PRINT M$"ARRAY REDIM": NORMAL :A$ = "WILL ALLOW YOU TO REDIMENSION A ONE- OR TWO-DIMENSIONAL INTEGER, STRING, OR REAL ARRAY, WITH LOSING ANY DATA!": & "PRT",A$: & "WAIT",10
  42. 710 W = 14: GOSUB 8700: GOSUB 8500: INVERSE : PRINT M$"GARBAGE MAN": NORMAL :A$ = "WILL PERFORM THE SAME 'HOUSECLEANING' FUNCTION AS APPLESOFT'S FRE(0) STATEMENT, BUT IT WILL DO IT QUICKLY!": & "PRT",A$: & "WAIT",8
  43. 720  PRINT :A$ = "THIS WILL KEEP APPLESOFT'S GARBAGE COLLECTION FROM SLOWING YOUR OTHERWISE FAST PROGRAM TO A SNAIL'S PACE!": & "PRT",A$: GOSUB 8400: & "WAIT",10
  44. 800  HOME : GOSUB 8600: HTAB 15: INVERSE : PRINT "AMPER ARRAY": NORMAL : PRINT M$:A$ = "ALL OF THE ROUTINES WILL WORK WITH TWO-DIMENSIONAL ARRAYS, AND IN MANY CASES WITH BOTH STRING AND NUMERIC DATA!": & "PRT",A$: & "WAIT",10
  45. 810  PRINT M$:A$ = "AMPER-ARRAY ALSO COMES WITH SEVERAL 'EXTRA' ROUTINES TO ROUND OUT THE PACKAGE, INCLUDING FAST RUN AND BRUN.": & "PRT",A$: GOSUB 8400: & "WAIT",10
  46. 900  HOME : GOSUB 8600: HTAB 15: INVERSE : PRINT "AMPER ARRAY": NORMAL : PRINT :A$ = "THE FOLLOWING ROUTINES ARE INCLUDED WITH 'AMPER ARRAY':": & "PRT",A$: PRINT : & "WAIT",5
  47. 910  FOR X = 1 TO 30:P = X -2 * INT((X -1)/2) -1: HTAB P *20 +1: READ A$: PRINT A$ MID$ ( CHR$(13),1,P = 1);: & "BEEP",15,1: NEXT X
  48. 920  & "WAIT",15: GOSUB 8400
  49. 930  GOTO 50
  50. 950  DATA "FAST DISK READ","ARRAY SEARCH","FAST DISK WRITE","ARRAY SORT","GARBAGE COLLECTOR","ARRAY CLEAR","ARRAY ROUNDING","ARRAY RENAME","ROW/COL ADD","ARRAY REDIM","ROW/COL DELETE","ARRAY DELETE","MATRIX IDENTITY","ARRAY RANDOM"
  51. 960  DATA "MATRIX TRANSPOSE","ARRAY VALUE","MATRIX MULTIPLY","ARRAY STR$","MATRIX INVERSE","HEX POKER","DELIMITED STR$","FAST BRUN","USR FUNCTIONS","FAST FP RUN","KEYBOARD SCAN","FP ONERR FIX","FP RETURN FIX","FP RND FIX"
  52. 970  DATA "TIMED WAIT","GOTOYX"
  53. 8400  & "BEEP",23,5: RETURN 
  54. 8500  & "BEEP",33,5: RETURN 
  55. 8600  & "BEEP",23,5: & "BEEP",0,5: & "BEEP",33,5: RETURN 
  56. 8700  FOR X1 = 1 TO W: & "SCROLL 4X","D": FOR X2 = 1 TO 5: NEXT X2: NEXT X1: VTAB 1: HTAB 1: RETURN 
  57. 9010  PRINT D$;"OPEN DATA FILE"
  58. 9020  PRINT D$;"READ DATA FILE"
  59. 9030  FOR C = 0 TO 17
  60. 9040  FOR R = 0 TO 2
  61. 9050  INPUT A$(R,C)
  62. 9060  NEXT R
  63. 9070  NEXT C
  64. 9080  PRINT D$;"CLOSE DATA FILE"
  65. 9200  & "WINDOW",1,21: VTAB 1: HTAB 1: INVERSE : PRINT " TOWN ";: HTAB 17: IF C = 3  THEN  PRINT " STATE ";: CALL  -868: HTAB 29: PRINT " POPULATION "
  66. 9210  IF C = 2  THEN  PRINT " POPULATION ";: CALL  -868
  67. 9220  NORMAL : VTAB 2: HTAB 1: FOR R1 = 1 TO R: CALL  -868: FOR C1 = 1 TO C: HTAB 1 +16 *(C1 = 2) +30 *(C1 = 3): PRINT A$(R1,C1);: NEXT : PRINT : NEXT : GOSUB 8400: RETURN 
  68. 9300  HTAB 29: PRINT "START";: & "BEEP",100,15: & "SORT",A$(1,0) TO A$(18,0) ON K%(0): HTAB 37: PRINT "DONE";: & "BEEP",100,15: GOSUB 9200: RETURN